package com.yang.yangCommand;

import com.yang.YangMonster;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.List;

public class WeaponController implements Listener, CommandExecutor {
    private static YangMonster yangMonster;

    //构造函数
    public WeaponController(YangMonster yangMonster) {
        this.yangMonster = yangMonster;
    }

    @EventHandler
    public void playerJoinEvent(PlayerJoinEvent playerJoinEvent){
        // 通过玩家名字获取离线玩家
        String uuid = String.valueOf(playerJoinEvent.getPlayer().getUniqueId());
        playerJoinEvent.getPlayer().sendMessage(ChatColor.GREEN + "欢迎加入游戏，你的UUID是：" + uuid);
        yangMonster.log(ChatColor.RED,"玩家的UUID：" + uuid);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
//        if (player.hasPermission("yourplugin.customPermission")) {
            // 玩家有 yourplugin.customPermission 权限的处理逻辑
//            /pex user <玩家名字> add yourplugin.customPermission
//        } else {
            // 玩家没有权限的处理逻辑
//        }
        // 忽略大小写
        if (!label.equalsIgnoreCase("yangGive")) {
            return true;
        }
        if (args.length == 0) {
            sender.sendMessage("空指令");
        } else if (args.length < 3) {
            sender.sendMessage(ChatColor.RED + "用法: /yangGive <玩家> <物品> <数量>");
            return true;
        }
        if (sender instanceof Player) {
            //玩家
            String playerName = args[0]; // 第一个参数为玩家名
            String itemName = args[1]; // 第二个参数为物品名
            int amount = Integer.parseInt(args[2]); // 第三个参数为数量
            // 检查玩家是否在线
            Player targetPlayer = Bukkit.getPlayer(playerName);
            if (targetPlayer == null || !targetPlayer.isOnline()) {
                sender.sendMessage(ChatColor.RED + "玩家 " + playerName + " 不在线！");
                return true;
            }

            // 检查给出的物品是否合法，比如存在于 Minecraft 的物品列表中
            Material material = Material.getMaterial("DIAMOND_SWORD");

            if (material == null) {
                sender.sendMessage(ChatColor.RED + "指定的物品不存在！");
                return true;
            }
            ItemStack itemStack = new ItemStack(material, amount);
            ItemMeta meta = itemStack.getItemMeta();
            meta.setDisplayName("OP之剑 使用人 - " +  playerName);
            // 添加附魔
            Enchantment liLiang = Enchantment.getByName("DAMAGE_ALL"); // 以伤害附魔为例
            meta.addEnchant(liLiang, 9999, true); // 将附魔添加到物品元数据中
            Enchantment dianRan = Enchantment.getByName("FIRE_ASPECT"); // 以伤害附魔为例
            meta.addEnchant(dianRan, 9999, true); // 将附魔添加到物品元数据中
            Enchantment qiangDuo = Enchantment.getByName("LOOT_BONUS_MOBS"); // 以伤害附魔为例
            meta.addEnchant(qiangDuo, 9999, true); // 将附魔添加到物品元数据中
            Enchantment hengSaoZhiRen = Enchantment.getByName("SWEEPING_EDGE");
            meta.addEnchant(hengSaoZhiRen, 9999, true); // 将附魔添加到物品元数据中
            List<String> stringList = new ArrayList<>();
            stringList.add("OP之剑 使用人 - " +  playerName);
            meta.setLore(stringList);
            // 应用物品元数据
            itemStack.setItemMeta(meta);
            // 给予玩家指定数量的物品
            targetPlayer.getInventory().addItem(itemStack);
            sender.sendMessage(ChatColor.GREEN + "已给予玩家 " + playerName + " " + amount + " 个 " + itemName);
        } else {
            //非玩家
            sender.sendMessage(ChatColor.RED + "只能在游戏内执行此命令！");
        }
        return true;
    }
}
